บทความนี้ขอกล่าวถึงวิธีการ การอ้างอิง Controls จาก Web User Control Form ไปยัง Parent Page ในกรณีที่คุณต้องการเรียกหา Controls ที่อยู่ใน Parent Page จาก Web User Control Form
ภาพรวมของการอ้างอิง Controls จาก Web User Control Form ไปยัง Parent Page
1. ใช้คำสั่ง Page.FindControl([ID]) ในการเข้าถึง Controls ใน Parent Page
2. ทำการ Casting Controls ต่างชนิดนั้น ๆ เช่น Label, TextBox
ตัวอย่างโปรแกรม .aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication6._Default" %>
<%@ Register Src="~/WebUserControl1.ascx" TagPrefix="ctl" TagName="control" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label runat="server" ID="lbl"></asp:Label>
<ctl:control runat="server" ID="control" />
</div>
</form>
</body>
</html>
ตัวอย่างโปรแกรม .ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication6.WebUserControl1" %>
<asp:Button runat="server" ID="btn" Text="click" onclick="btn_Click" />
ตัวอย่างโปรแกรม .ascx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication6
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e){}
protected void btn_Click(object sender, EventArgs e)
{
((Label)Page.FindControl("lbl")).Text = "Hello, My Parent Page :)";
}
}
}
ผลลัพธ์